﻿/*
 * Created by SharpDevelop.
 * User: Zoila
 * Date: 18/10/2011
 * Time: 12:50 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using Business_Entity;
using Business_Logic;

namespace PetSoft.GUI.Ventas
{
	/// <summary>
	/// Description of GUICierreCaja.
	/// </summary>
	public partial class GUICierreCaja : Form
	{
		BERegistroCaja registroCaja;
		BLCaja blCaja= new BLCaja();
		List<BEDocumentoVenta> documentosLIST = new List<BEDocumentoVenta>();
		float totalMov=0;
		float totalDol=0;
		public GUICierreCaja()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
			
		}
		
		public GUICierreCaja(BERegistroCaja regCaja, bool modifica){
			this.registroCaja=regCaja;
			InitializeComponent();
			modificar(modifica);
			this.movimientosDGV.RowHeadersVisible=false;
			cajaTB.Text=registroCaja.Caja.ToString();
			cajeroTB.Text=registroCaja.Empleado.Nombre+" "+registroCaja.Empleado.ApPaterno;
			editarBTN.Visible=false;
			int resultado= blCaja.llenaDetalle(regCaja);
			
			if (resultado==1){
				if (regCaja.DetRegistro[0].Moneda.Equals("S/.")) this.solInicialTB.Text=regCaja.DetRegistro[0].MontoIni.ToString();
					else this.dolarInicialTB.Text=regCaja.DetRegistro[0].MontoIni.ToString();
			
				if (regCaja.DetRegistro[1].Moneda.Equals("S/.")) this.solInicialTB.Text=regCaja.DetRegistro[1].MontoIni.ToString();
					else this.dolarInicialTB.Text=regCaja.DetRegistro[1].MontoIni.ToString();
			
			}
			llenaGrilla();
			dolarFinalTB.Text=(Single.Parse(dolarInicialTB.Text)+totalDol).ToString();
			solFinalTB.Text=(Single.Parse(solInicialTB.Text)+totalMov).ToString();
			this.movimientosDGV.RowHeadersVisible=false;
			
		}
		private void modificar(bool modifica){			
			cerrarBTN.Visible=modifica;
			//editarBTN.Visible=!modifica;
			cerrarBTN.Text="Cerrar";
		}
		
		
		private void llenaGrilla (){
			int i=0;
			totalMov=0;
			documentosLIST=blCaja.getDocumentos(registroCaja);
			foreach (BEDocumentoVenta doc in documentosLIST){
				object[] row0={doc.ToString(),doc.Tipo.Descripcion,doc.Fecha.Date,"S/. " + Math.Round(doc.Total,3).ToString(),i++,doc.Moneda.CodMoneda +' ' +Math.Round(doc.Efectivo,3),doc.Moneda.CodMoneda +' ' + Math.Round(doc.Tarjeta,3)};
				if (doc.Moneda.CodMoneda.Equals("S/.")){
				    	totalMov+=doc.Efectivo;
				    }
				    else{
				    	totalDol+=doc.Efectivo;
				    }
				
				this.movimientosDGV.Rows.Add(row0);
			}
			resultadosLB.Text=i.ToString() + " Resultados";
			
		}
		
		void EditarBTNClick(object sender, EventArgs e)
		{
			modificar(true);
		}
		
		void CerrarBTNClick(object sender, EventArgs e)
		{
			
			Business_Logic.BLCaja blCaja= new Business_Logic.BLCaja();
			try{
				blCaja.CerrarCaja(registroCaja.Caja,Single.Parse(solFinalTB.Text),Single.Parse(dolarFinalTB.Text));
				MessageBox.Show("Se realizo el cierre de Caja");
				this.Close();
			}
			catch {
				MessageBox.Show("Ocurrio un error al cierre de Caja");
			}
			
		}
		
		void CancelarBTNClick(object sender, EventArgs e)
		{
			this.Close();
		}
	}
}
